#判断密码长度
def pwd_len(passwd,grade):
    if len(passwd) <= 8:
        advice.append('长度小于8,请重试')
    else:
        grade += 1
    return grade

#判断是否包含大，小写字母，数字，其他符号三种以上
result = [0,0,0,0]
def pwd_sign(passwd):
    for i in passwd:
        if sum(result) >= 3:
            break
        else:
            if i.isupper():
                result[0] = 1
            elif i.islower():
                result[1] = 1
            elif i.isdigit():
                result[2] = 1
            else:
                result[3] = 1
    return result

#判断子串
def pwd_sub(passwd):
    # global grade1
    grade1 = 0
    for j in range(len(passwd)-2):
        if passwd.count(passwd[j:j+3]) >= 2:
            print(passwd[j:j+3])
            advice.append('有长度超过或等于3的子串重复')
            break
        else:
            grade1 = 1
    return grade1

passwd = input('请输入您的密码:')
grade = 2
advice = []
grade = pwd_len(passwd,grade)
grade += pwd_sub(passwd)
# grade1 = pwd_sub(passwd)
# if grade1 == 1:
#     grade += 1
result1 = pwd_sign(passwd)
if sum(result1) < 3:
    advice.append('你的密码需要包括大、小写字母，数字，其他符号，以上四种最少三种')
    # print(f'{grade},您的密码复杂度不足，可根据以下建议改进：{advice}')
else:
    grade += 1
if grade < 5:
    print(f'{grade},您的密码复杂度不足，可根据以下建议改进：{advice}')
else:
    print('恭喜您设置密码成功')

